package com.cq.hd.system.controller;

import com.cq.hd.common.pagination.Page;
import com.cq.hd.common.response.Result;
import com.cq.hd.common.response.ResultGenerator;
import com.cq.hd.system.api.NotifyMsgApi;
import com.cq.hd.system.api.dto.NotifyMsgPageDto;
import com.cq.hd.common.entity.mq.NotifyMsgSendDto;
import com.cq.hd.system.api.dto.NotifyMsgUpdateReadDto;
import com.cq.hd.system.api.vo.NotifyMsgPageVo;
import com.cq.hd.system.service.TbNotifyMsgService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

/**
 * <p>
 * 消息通知表 前端控制器
 * </p>
 *
 * @author mYunYu
 * @since 2024-01-15
 */
@RestController
public class TbNotifyMsgController implements NotifyMsgApi {

    @Autowired
    private TbNotifyMsgService notifyMsgService;

    @ApiOperation(value = "保存通知消息")
    @Override
    public Result<Boolean> saveNotifyMsg(@RequestBody NotifyMsgSendDto notifyMsgSaveDto) {
        return ResultGenerator.success(notifyMsgService.saveNotifyMsg(notifyMsgSaveDto));
    }

    @ApiOperation(value = "根据用户id批量获取通知消息数据")
    @Override
    public Result<Page<NotifyMsgPageVo>> pageNotifyMsg(NotifyMsgPageDto notifyMsgPageDto) {
        return ResultGenerator.success(notifyMsgService.pageNotifyMsg(notifyMsgPageDto));
    }

    @ApiOperation(value = "更新消息已读状态")
    @Override
    public Result<Boolean> updateRead(@RequestBody NotifyMsgUpdateReadDto notifyMsgUpdateReadDto) {
        return ResultGenerator.success(notifyMsgService.updateRead(notifyMsgUpdateReadDto));
    }

    @ApiOperation(value = "清空未读消息")
    @Override
    public Result<Boolean> cleanNoRead(@RequestBody NotifyMsgUpdateReadDto notifyMsgUpdateReadDto) {
        return ResultGenerator.success(notifyMsgService.cleanNoRead(notifyMsgUpdateReadDto));
    }

    @ApiOperation(value = "获取未读消息个数")
    @Override
    public Result<Integer> getNoReadCount(NotifyMsgPageDto notifyMsgPageDto) {
        return ResultGenerator.success(notifyMsgService.getNoReadCount(notifyMsgPageDto));
    }
}
